#ifndef MENU_STATE_H
#define MENU_STATE_H
#include <GL/gl.h>
#include "menu_item.h"

#define MENU_STATE_ITEMS_NB 3

/**
 * Environnement de l'etat menu
 */
typedef struct Menu_State_Env{
  
	GLuint background;
	Menu_Item items[MENU_STATE_ITEMS_NB];
	int selected_item;
	
	
} Menu_State_Env;


/**
 * Permet de recuperer l'environnement de l'etat menu
 */
Menu_State_Env * ms_env();

/**
 * Initialisation de l'etat menu
 * @param env reference vers l'environnement attache a l'etat menu
 */
void menu_state_init();

void menu_state_init_gl(int width, int height);

/**
 * Fonction principale de l'etat menu
 * On y fait les calculs et les affichages 
 * @todo Faire 2 appels de fonctions separees a l'interieur, on differencie le computing du drawing
 * @param env Reference vers l'environnement attache a l'etat menu
 */
void menu_state_main();

/**
 * Les evenments de clavier et souris sera gere par cette fonction quand on est dans me menu
 *  @warning C'est pas definitif, mais on a pas mieux pour le moment, OpenGL force a utiliser des fonctions separees pour touches simples et speciales
 */
void menu_state_event_keyboard(unsigned char key, int x, int y);

void menu_state_event_special(int key, int x, int y);

/**
 * \fn void menu_state_resize(void* env, int width, int height)
 * \brief Gestion du redimensionnement des fenetres
 * 
 * @param width Nouvelle largeur de la fenetre
 * @param height Nouvelle hauteur de la fene
 */
void menu_state_resize(int width, int height);

#endif